#!/bin/sh

# - if /dev is not mounted - mount as a devtmpfs (CONFIG_DEVTMPFS=y)
# - if /dev is mounted (e.g. due to handover from initramfs or
#   CONFIG_DEVTMPFS_MOUNT=y), remount with specific options
# - some video drivers require exec access in /dev, thus it's set here
# - for completness, we add few sanity limits (2k non-empty files, 16k inodes)

UDEVOPTS="exec,nosuid,noatime,mode=0755,nr_blocks=2048,nr_inodes=16384"
if /bin/mountpoint -q /dev ; then
	/bin/mount -n -o remount,${UDEVOPTS} dev /dev
else
	/bin/mount -n -t devtmpfs -o ${UDEVOPTS} dev /dev
fi

# mount /run directory
/bin/mount -n -t tmpfs -o mode=0755,nosuid,nodev,exec tmpfs /run

# make sure hotplugger is not set
echo > /proc/sys/kernel/hotplug

# since v155, udevd automatically copies /lib/udev/devices
# and creates /proc/{kcore,self/fd/{0,1,2}} symlinks

# launch udev daemon, make sure it's not running first
test -z "$(/bin/pidof -s udevd)" && /sbin/udevd --daemon

# coldplug devices and wait for the queue to be processed
/sbin/udevadm trigger --type=subsystems --action=add
/sbin/udevadm trigger --type=devices --action=add
/sbin/udevadm settle

